package com.itheima.edu.info.manager.dao;

import com.itheima.edu.info.manager.domain.Student;

//添加学生的方法
public class StudentDao {
    //创建一个长度为5的数组容器
    private static Student[] stus = new Student[5]; //{null,null,null,null,null}
    public boolean addStudent(Student stu) {
        //定义一个标记:index,初始值为-1,假设没有位置能存了
        int index = -1;

        //遍历数组
        for (int i = 0; i < stus.length; i++) {
            //获取到数组中当前索引位置的元素
            Student student = stus[i];

            //判断当前索引位置的元素是否为null
            if (student == null){
                //说明数组还没有存满,当前这个索引是null,就可以用,修改index的值
                index = i;
                break;
            }
        }
        //根据index的值来判断本次能否成功添加
        if (index == -1){
            return false;
        }else{
            //不是-1说明有坑,有坑就占着
            stus[index] = stu;
            return true;
        }
    }

    //查询所有学生
    public Student[] findAllStudent() {

        return this.stus;
    }

    public void deleteStudentById(String delId) {
        //查找id在容器中所在的索引位置
        int index = getIndex(delId);
        //将索引的位置使用null进行覆盖
        stus[index] = null;
    }

    private int getIndex(String id) {
        //先假设要查找的id不存在
        int index = -1;
        //遍历数组容器
        for (int i = 0; i < stus.length; i++) {
            //拿到每一个学生对象
            Student stu = stus[i];

            if (stu != null && stu.getId().equals(id)){
                index = i;
                break;
            }
        }
        return index;
    }


    public void updateStudent(String updateId, Student newStu) {
        //查找updateId在容器中的索引位置
        int index = getIndex(updateId);
        //将该索引位置使用新的学生对象替换
        stus[index] = newStu;
    }
}
